Systems and methods for determining a point of interest

ABSTRACT

A method for searching a point of interest (POI) around a location is provided. The method includes receiving information relating to a target location associated with a user from a terminal and determining a target geocode value relating to the target location. The method also includes obtaining a geocode structure for determining POIs. The method further includes determining at least one POI relating to the target location based on the geocode structure and the target geocode value.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of International Application No.PCT/CN2017/080218, filed on Apr. 12, 2017, which claims priority ofChinese Application No. 201610229144.3 filed on Apr. 12, 2016, theentire contents of which are hereby incorporated by reference.

TECHNICAL FIELD

This application relates generally to systems and methods for searchingdata, and more particular, systems and methods for searching a point ofinterest (POI) around a location.

BACKGROUND

With the development of the information technology, electronic productsbecome more and more popular, and the amount of data needed are becominghuger and huger. Therefore, to satisfy a user's need for the huge data,the speed of searching data is more and more important.

SUMMARY

According to an aspect of the present disclosure, a system may includeone or more storage media and a processor configured to communicate withthe one or more storage media. The one or more storage media may includea set of instructions for determining a point of interest (POI). Whenexecuting the set of instructions, the processor may be directed toperform one or more of the following operations. The processor mayreceive information relating to a target location associated with a userfrom a terminal. The processor may determine a target geocode valuerelating to the target location. The processor may obtain a geocodestructure for determining POIs. The processor may determine at least onePOI relating to the target location based on the geocode structure andthe target geocode value.

According to another aspect of the present disclosure, a method fordetermining a POI may include one or more of the following operations. Afirst processor may receive information relating to a target locationassociated with a user from a terminal. The first processor maydetermine a target geocode value relating to the target location. Thefirst processor may obtain a geocode structure for determining POIs. Thefirst processor may determine at least one POI relating to the targetlocation based on the geocode structure and the target geocode value.

According to yet another aspect of the present disclosure, anon-transitory computer readable medium embodying a computer programproduct, the computer program product comprising instructions configuredto cause a computing device to receive, from a terminal, informationrelating to a target location associated with a user. The computerprogram product includes instructions also configured to cause thecomputing device to determine a target geocode value relating to thetarget location. The computer program product includes instructionsfurther configured to cause the computing device to obtain a geocodestructure for determining POIs and determine at least one POI relatingto the target location based on the geocode structure and the targetgeocode value.

In some embodiments, the first processor may determine a targetlongitude value of the target location and a target latitude value ofthe target location based on the information relating to the targetlocation associated with the user and determine the target geocode valuerelating to the target location based on the target longitude value ofthe target location and the target latitude value of the target locationby using an encoding technique.

In some embodiments, the encoding technique includes a Geohashtechnique.

In some embodiments, the geocode structure includes a geocode treestructure.

In some embodiments, the first processor may determine the at least onePOI relating to the target location based on the geocode tree structureand the target geocode value.

In some embodiments, the first processor may obtain a search radius. Thefirst processor may determine a coding length based on the searchradius. The first processor may determine at least one related geocodevalue in the geocode tree structure based on the target geocode valueand the coding length. The first processor may determine the at leastone POI based, at least in part, on the at least one related geocodevalue.

In some embodiments, the first processor may determine the at least onerelated geocode value based on a Hash search.

In some embodiments, the first processor may determine a neighboringlocation geocode value corresponding to the target location and the atleast one POI relating to the target location based, at least in part,on the neighboring location geocode value.

According to another aspect of the present disclosure, a method forgenerating a geocode structure may include one or more of the followingoperations. A second processor may obtain a plurality of samplelocations from a storage device. The second processor may determine asample longitude value and a sample latitude value for each of theplurality of sample locations, a sample geocode value for the each ofthe plurality of sample locations based on the sample longitude value ofthe each of the plurality of sample locations and the sample latitudevalue of the each of the plurality of sample locations. The secondprocessor may generate a plurality of nodes of the geocode structurebased on the sample geocode values. The second processor may save thegeocode structure into the storage device.

In some embodiments, the second processor may associate one or momsample POIs to each of the sample geocode values in the geocodestructure.

In some embodiments, the second processor may determine a Hash index forthe plurality of nodes of the geocode tree structure.

In some embodiments, the geocode structure includes a Trie treestructure.

In some embodiments, the first processor and the second processor aredifferent.

Additional features will be set forth in part in the description whichfollows, and in part will become apparent to those skilled in the artupon examination of the following and the accompanying drawings or maybe learned by production or operation of the examples. The features ofthe present disclosure may be realized and attained by practice or useof various aspects of the methodologies, instrumentalities andcombinations set forth in the detailed examples discussed below.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is further described in terms of exemplaryembodiments. These exemplary embodiments are described in detail withreference to the drawings. These embodiments are non-limiting exemplaryembodiments, in which like reference numerals represent similarstructures throughout the several views of the drawings, and wherein:

FIG. 1 is a block diagram of an exemplary system for determining POIaccording to some embodiments of the present disclosure;

FIG. 2 is a block diagram of an exemplary computing device in the systemillustrated in FIG. 1 according to some embodiments of the presentdisclosure;

FIG. 3 is a block diagram of an exemplary processor according to someembodiments of the present disclosure;

FIG. 4 is a flowchart of an exemplary process for determining POIaccording to some embodiments of the present disclosure;

FIG. 5 is a flowchart of another exemplary process for determining POIaccording to some embodiments of the present disclosure;

FIG. 6 is a flowchart of an exemplary process for constructing a geocodestructure according to some embodiments of the present disclosure; and

FIG. 7 shows a search result for determining POI according to someembodiments of the present disclosure.

DETAILED DESCRIPTION

The following description is presented to enable any person skilled inthe art to make and use the present disclosure, and is provided in thecontext of a particular application and its requirements. Variousmodifications to the disclosed embodiments will be readily apparent tothose skilled in the art, and the general principles defined herein maybe applied to other embodiments and applications without departing fromthe spirit and scope of the present disclosure. Thus, the presentdisclosure is not limited to the embodiments shown, but is to beaccorded the widest scope consistent with the claims.

The terminology used herein is for the purpose of describing particularexample embodiments only and is not intended to be limiting. As usedherein, the singular forms “a,” “an,” and “the” may be intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprise,”“comprises,” and/or “comprising,” “include,” “includes,” and/or“including,” when used in this specification, specify the presence ofstated features, integers, steps, operations, elements, and/orcomponents, but do not preclude the presence or addition of one or moreother features, integers, steps, operations, elements, components,and/or groups thereof.

These and other features, and characteristics of the present disclosure,as well as the methods of operation and functions of the relatedelements of structure and the combination of parts and economies ofmanufacture, may become more apparent upon consideration of thefollowing description with reference to the accompanying drawings, allof which form a part of this disclosure. It is to be expresslyunderstood, however, that the drawings are for the purpose ofillustration and description only and are not intended to limit thescope of the present disclosure. It is understood that the drawings arenot to scale.

The flowcharts used in the present disclosure illustrate operations thatsystems implement according to some embodiments in the presentdisclosure. It is to be expressly understood, the operations of theflowchart may be implemented not in order. Conversely, the operationsmay be implemented in inverted order, or simultaneously. Moreover, oneor more other operations may be added to the flowcharts. One or moreoperations may be removed from the flowcharts.

Moreover, while the system and method in the present disclosure isdescribed primarily in regard to determining POI associated with atarget location, it should also be understood that this is only oneexemplary embodiment. The system or method of the present disclosure maybe applied to any other kinds of on demand service. For example, thesystem or method may be applied to a navigation system. A user mayinitiate a request for POI associated with a location (e.g., a locationof the user, a location designated by the user). As another example, thesystem or method of the present disclosure may be applied to atransportation system of different environments including land, ocean,aerospace, or the like, or any combination thereof. The vehicle of thetransportation systems may include a taxi, a private car, a hitch, abus, a train, a bullet train, a high-speed rail, a subway, a vessel, anaircraft, a spaceship, a hot-air balloon, a driverless vehicle, or thelike, or any combination thereof. The transportation system may alsoinclude any transportation system for management and/or distribution,for example, a system for sending and/or receiving an express. Theapplication of the system or method of the present disclosure mayinclude a web page, a plug-in of a browser, a client terminal, a customsystem, an internal analysis system, an artificial intelligence robot,or the like, or any combination thereof.

The term “user” in the present disclosure may refer to an individual, anentity that may request a service, order a service, provide a service,or facilitate the providing of the service. For example, the user may bea passenger, a driver, an operator, or the like, or any combinationthereof. The term “user terminal” in the present disclosure may refer toa tool that is used by the user to request or order a service or receivea result corresponding to the service. For example, when a user requestsfor some POIs around a location, the system may transmit a result (e.g.,a plurality of POIs) to the user terminal. In some embodiments, the userterminal may include a passenger terminal or a driver terminal. Forexample, when a passenger requests for a vehicle, he or she may initiatean order including a starting location and a destination. When he or sheinputs the starting location through a passenger terminal, the systemmay determine the destination based on the starting location withoutreceiving the destination input by the passenger. Further, the systemmay provide a plurality of POIs around the destination to the passengerthrough the passenger terminal. As another example, when a driverfinished an order or waits for an order at a location, the system mayprovide a plurality of POIs around the location of the driver, thedriver may determine to go to a next location to have a new order easilybased on the POIs. In some embodiments, the POI may include informationrelating to a location. The information relating to a location mayinclude a name of a location, a coordinate of the location (e.g., alongitude value, or latitude value), an address of the location (e.g.,state, province, city, district, road, house number), a telephone numberrelating to the location, a promotional activity, or other types aroundthe location, such as hospitals, schools, parks, roads, bridges, rivers,lakes, mountains, railway stations, airports, companies, residentialcommunities, hotel scenic, spots, or the like, or any combinationthereof.

The term “service request” and “order” in the present disclosure areused interchangeably to refer to a request that may be initiated by apassenger, a requester, a service requester, a customer, a driver, aprovider, a service provider, a supplier, or the like, or anycombination thereof. The service request may be accepted by any one of apassenger, a requester, a service requester, a customer, a driver, aprovider, a service provider, or a supplier. The service request may bechargeable or free.

The positioning technology used in the present disclosure may be basedon a global positioning system (GPS), a global navigation satellitesystem (GLONASS), a compass navigation system (COMPASS), a Galileopositioning system, a quasi-zenith satellite system (QZSS), a wirelessfidelity (WiFi) positioning technology, or the like, or any combinationthereof. One or more of the above positioning systems may be usedinterchangeably in the present disclosure.

An aspect of the present disclosure relates to online systems andmethods for determining a point of interest associated with a location.To this end, the online on-demand service platform may first obtain atarget location associated with a user; and then through traversing ageocode structure to determine the POI(s) around the target location.Since each geocode value in the geocode structure is associated with aplurality of POIs in advance, the user may get the POI(s) around thetarget location easily.

It should be noted that Location Based Service (LBS) for onlineon-demand service is a new form of service rooted only in post-Internetera. It provides technical solutions to users that could raise only inpost-internet era. In pre-Internet era, GPS or navigation technology arenot available. If a service requester needs to know a POI around alocation, he or she may go to the location personally or ask other. ThePOI around a location may be difficult for the service requester to findwithout the GPS and navigation technology. The LBS for online on-demandservice, however, may allow the service requester to find the POI moreeasily. Therefore, through the Internet, the LBS for online on-demandservice may provide a much more efficient service for the servicerequester, which may never occur in the traditional pre-Internet era.

FIG. 1 is a block diagram of an exemplary on-demand service system 100according to some embodiments. The on-demand service system 100 may bean online navigation service platform for determining one or more POIsaround a location. The on-demand service system 100 may be an onlineplatform including a server 110, a network 120, a user terminal 130, anda storage 140.

In some embodiments, the server 110 may be a single server or a servergroup. The server group may be centralized or distributed (e.g., theserver 110 may be a distributed system). In some embodiments, the server110 may be local or remote. For example, the server 110 may accessinformation and/or data stored in the user terminal 130 and/or thestorage 140 via the network 120. As another example, the server 110 mayconnect to the user terminal 130 and/or the storage 140 to access storedinformation and/or data. In some embodiments, the server 110 may beimplemented on a cloud platform. Merely by way of example, the cloudplatform may include a private cloud, a public cloud, a hybrid cloud, acommunity cloud, a distributed cloud, an inter-cloud, a multi-cloud, orthe like, or any combination thereof. In some embodiments, the server110 may be implemented on a computing device 200 having one or morecomponents illustrated in FIG. 2 in the present disclosure.

In some embodiments, the server 110 may include a processing engine 112.The processing engine 112 may process information and/or data relatingto the service request to perform one or more functions of the server110 described in the present disclosure. For example, the processingengine 112 may determine a POI associated with a target location (e.g.,a POI around the target location) through traversing a geocodestructure. In some embodiments, the processing engine 112 may includeone or more processors (e.g., single-core processor(s) or multi-coreprocessor(s)). Merely by way of example, the processing engine 112 mayinclude a central processing unit (CPU), an application-specificintegrated circuit (ASIC), an application-specific instruction-setprocessor (ASIP), a graphics processing unit (GPU), a physics processingunit (PPU), a digital signal processor (DSP), a field programmable gatearray (FPGA), a programmable logic device (PLD), a controller, amicrocontroller unit, a reduced instruction-set computer (RISC), amicroprocessor, or the like, or any combination thereof.

The network 120 may facilitate the exchange of information and/or databetween the components of the on-demand service system 100. In someembodiments, one or more components in the on-demand service system 100(e.g., the server 110, the user terminal 130, and the storage 140) maytransmit information and/or data to other component(s) in the on-demandservice system 100 via the network 120. For example, the server 110 mayreceive a service request from the user terminal 130 via the network120. In some embodiments, the network 120 may be any type of wired orwireless network, or combination thereof. Merely by way of example, thenetwork 120 may include a cable network, a wireline network, an opticalfiber network, a telecommunications network, an intranet, an internet, alocal area network (LAN), a wide area network (WAN), a wireless localarea network (WLAN), a metropolitan area network (MAN), a publictelephone switched network (PSTN), a Bluetooth network, a ZigBeenetwork, a near field communication (NFC) network, or the like, or anycombination thereof. In some embodiments, the network 120 may includeone or more network access points. For example, the network 120 mayinclude wired or wireless network access points such as base stationsand/or internet exchange points 120-1, 120-2, etc., through which one ormore components of the on-demand service system 100 may connect to thenetwork 120 to exchange data and/or information between them.

In some embodiments, the user terminal 130 may include a mobile device130-1, a tablet computer 130-2, a laptop computer 130-3, a built-indevice in a motor vehicle 130-4, or the like, or any combinationthereof. In some embodiments, the mobile device 130-1 may include asmart home device, a wearable device, a smart mobile device, a virtualreality device, an augmented reality device, or the like, or anycombination thereof. In some embodiments, the smart home device mayinclude a smart lighting device, a control device of an intelligentelectrical apparatus, a smart monitoring device, a smart television, asmart video camera, an interphone, or the like, or any combinationthereof. In some embodiments, the wearable device may include a smartbracelet, a smart footgear, smart glasses, a smart helmet, a smartwatch, smart clothing, a smart backpack, a smart accessory, or the like,or any combination thereof. In some embodiments, the smart mobile devicemay include a smartphone, a personal digital assistance (PDA), a gamingdevice, a navigation device, a point of sale (POS) device, or the like,or any combination thereof. In some embodiments, the virtual realitydevice and/or the augmented reality device may include a virtual realityhelmet, virtual reality glasses, a virtual reality patch, an augmentedreality helmet, augmented reality glasses, an augmented reality patch,or the like, or any combination thereof. For example, the virtualreality device and/or the augmented reality device may include a GoogleGlass, an Oculus Rift, a Hololens, a Gear VR, etc. In some embodiments,the built-in device in the motor vehicle 130-4 may include an onboardcomputer, an onboard television, etc. In some embodiments, the userterminal 130 may be a device with positioning technology for locatingthe position of the service requester and/or the user terminal 130.

The storage 140 may store data and/or instructions. In some embodiments,the storage 140 may store data obtained from the user terminal 130and/or the network 120. In some embodiments, the storage 140 may storedata and/or instructions that the server 110 may execute or use toperform exemplary methods described in the present disclosure. In someembodiments, storage 140 may include mass storage, removable storage,volatile read-and-write memory, read-only memory (ROM), or the like, orany combination thereof. Exemplary mass storage may include a magneticdisk, an optical disk, a solid-state drive, etc. Exemplary removablestorage may Include a flash drive, a floppy disk, an optical disk, amemory card, a zip disk, a magnetic tape, etc. Exemplary volatileread-and-write memory may include a random access memory (RAM).Exemplary RAM may include a dynamic RAM (DRAM), a double date ratesynchronous dynamic RAM (DDR SDRAM), a static RAM (SRAM), a thyristorRAM (T-RAM), and a zero-capacitor RAM (Z-RAM), etc. Exemplary ROM mayinclude a mask ROM (MROM), a programmable ROM (PROM), an erasableprogrammable ROM (EPROM), an electrically-erasable programmable ROM(EEPROM), a compact disk ROM (CD-ROM), and a digital versatile disk ROMetc. In some embodiments, the storage 140 may be implemented on a cloudplatform. Merely by way of example, the cloud platform may include aprivate cloud, a public cloud, a hybrid cloud, a community cloud, adistributed cloud, an inter-cloud, a multi-cloud, or the like, or anycombination thereof.

In some embodiments, the storage 140 may connect to the network 120 tocommunicate with one or more components of the on-demand service system100 (e.g., the server 110, the user terminal 130). One or morecomponents in the on-demand service system 100 may access the data orinstructions stored in the storage 140 via the network 120. In someembodiments, the storage 140 may connect to or communicate with one ormore components of the on-demand service system 100 (e.g., the server110, the user terminal 130). In some embodiments, the storage 140 may bepart of the server 110.

In some embodiments, one or more components of the on-demand servicesystem 100 (e.g., the server 110, the user terminal 130) may havepermission to access the storage 140. In some embodiments, one or morecomponents of the on-demand service system 100 may read and/or modifyinformation relating to the user. For example, the server 110 may readand/or modify one or more users' information after a service.

In some embodiments, information exchange between the components of theon-demand service system 100 may be achieved by way of requesting aservice. The object of the service request may be any product. In someembodiments, the product may be a tangible product or an immaterialproduct. The tangible product may include food, medicine, commodity,chemical product, electrical appliance, clothing, car, housing, luxury,or the like, or any combination thereof. The immaterial product mayinclude a servicing product, a financial product, a knowledge product,an internet product, or the like, or any combination thereof. Theinternet product may include an individual host product, a web product,a mobile internet product, a commercial host product, an embeddedproduct, or the like, or any combination thereof. The mobile internetproduct may be used on software of a mobile terminal, a program, asystem, or the like, or any combination thereof. The mobile terminal mayinclude a tablet computer, a laptop computer, a mobile phone, a personaldigital assistance (PDA), a smart watch, a point of sale (POS) device,an onboard computer, an onboard television, a wearable device, or thelike, or any combination thereof. For example, the product may be anysoftware and/or application used on the computer or mobile phone. Thesoftware and/or application may relate to socializing, shopping,transporting, entertainment learning, investment, or the like, or anycombination thereof. In some embodiments, the software and/orapplication relating to transporting may include a traveling softwareand/or application, a vehicle scheduling software and/or application, amapping software and/or application, etc. The vehicle may include ahorse, a carriage, a rickshaw (e.g., a wheelbarrow, a bike, a tricycle),a car (e.g., a taxi, a bus, a private car), a train, a subway, a vessel,an aircraft (e.g., an airplane, a helicopter, a space shuttle, a rocket,a hot-air balloon), or the like, or any combination thereof.

FIG. 2 is a schematic diagram illustrating exemplary hardware andsoftware components of a computing device 200 on which the server 110,the user terminal 130, and/or the storage 140 may be implementedaccording to some embodiments of the present disclosure. For example,the processing engine 112 may be implemented on the computing device 200and configured to perform functions of the processing engine 112disclosed in this disclosure.

The computing device 200 may be a general-purpose computer or aspecial-purpose computer, and both may be used to implement an on-demandsystem for the present disclosure. The computing device 200 may be usedto implement any component of the on-demand service as described herein.For example, the processing engine 112 may be implemented on thecomputing device 200, via its hardware, software program, firmware, or acombination thereof. Although only one such computer is shown, forconvenience, the computer functions relating to the on-demand service asdescribed herein may be implemented in a distributed fashion on a numberof similar platforms, to distribute the processing load.

The computing device 200, for example, may include COM ports 250connected to and from a network connected thereto to facilitate datacommunications. The computing device 200 may also include a processor220, in the form of one or more processors, for executing programinstructions. The exemplary computing device may include an internalcommunication bus 210, program storage and data storage of differentforms, including, for example, a disk 270, and ROM 230, or RAM 240, forvarious data files to be processed and/or transmitted by the computingdevice. The exemplary computing device may also include programinstructions stored in the ROM 230, RAM 240, and/or other type ofnon-transitory storage medium to be executed by the processor 220. Themethods and/or processes of the present disclosure may be implemented asthe program instructions. The computing device 200 also includes an I/Ocomponent 260, supporting input/output between the computer and othercomponents therein such as user interface elements 280. The computingdevice 200 may also receive programming and data via networkcommunications.

The computing device 200 may also include a hard disk controllercommunicated with a hard disk, a keypad/keyboard controller communicatedwith a keypad/keyboard, a serial interface controller communicated witha serial peripheral equipment, a parallel interface controllercommunicated with a parallel peripheral equipment, a display controllercommunicated with a display, or the like, or any combination thereof.

Merely for illustration, only one CPU and/or processor is described inFIG. 2. Multiple CPUs and/or processors are also contemplated; thusoperations and/or method steps performed by one CPU and/or processor asdescribed in the present disclosure may also be jointly or separatelyperformed by the multiple CPUs and/or processors. For example, if in thepresent disclosure the CPU and/or processor of the computing device 200executes both step A and step B, step A and step B can also be performedby two different CPUs and/or processors jointly or separately in thecomputing device 200 (e.g., the first processor executes step A and thesecond processor executes step B, or the first and second processorsjointly execute steps A and B).

FIG. 3 is a block diagram of an exemplary processor according to someembodiments of the present disclosure. The processor 300 may be adaptedto the server 110, the user terminal 130, and/or the storage 140according to some embodiments of the present disclosure. In someembodiments, the processor 300 may include a location obtaining module310, a location analysis module 320, a location encoding module 330, alook-up module 340, a POI determination module 350, a POI obtainingmodule 360, a classification module 370, and a sorting module 380.

Generally, the word “module” as used herein, refers to logic embodied inhardware or firmware, or to a collection of software instructions. Themodules described herein may be implemented as software and/or hardwaremodules and may be stored in any type of non-transitorycomputer-readable medium or other storage device. In some embodiments, asoftware module may be compiled and linked into an executable program.It will be appreciated that software modules can be callable from othermodules or from themselves, and/or can be invoked in response todetected events or interrupts. Software modules configured for executionon a computing device (e.g., processor 300) can be provided on acomputer-readable medium, such as a compact disc, a digital video disc,a flash drive, a magnetic disc, or any other tangible medium, or as adigital download (and can be originally stored in a compressed orinstallable format that requires installation, decompression, ordecryption prior to execution). Such software code can be stored,partially or fully, on a memory device of the executing computingdevice, for execution by the computing device. Software instructions canbe embedded in firmware, such as an EPROM. It will be furtherappreciated that hardware modules can be included of connected logicunits, such as gates and flip-flops, and/or can be included ofprogrammable units, such as programmable gate arrays or processors. Themodules or computing device functionality described herein arepreferably implemented as software modules, but can be represented inhardware or firmware. In general, the modules described herein refer tological modules that can be combined with other modules or divided intosub-modules despite their physical organization or storage.

The location obtaining module 310 may obtain a location from the userterminal 130 and/or the storage 140 via the network 120. The locationmay include a target location associated with a user. For example, thelocation may include a location of the user terminal 130 held oroperated by the user. The location may include a location designated bythe user's input through the user terminal 130. The location may alsoinclude a plurality of locations used to construct a geocode structure(also referred to herein as sample locations).

The location analysis module 320 may receive the location from thelocation obtaining module 310. The location analysis module 320 maydetermine a longitude value and a latitude value of the location whenthe location doesn't include coordinate information of the location.

The location encoding module 330 may receive the longitude value and thelatitude value of the location to determine a geocode value of thelocation by using an encoding technique. The encoding technique mayinclude Geohash technique, Morton code technique, Hilbert Curvetechnique, or the like, or a combination thereof.

The look-up module 340 may traverse the geocode structure based on thegeocode value of the location to determine at least one related geocodevalue. The related geocode value may have a common prefix with respectto the geocode value of the location.

The POI determination module 350 may determine a plurality of POIsassociated with the location based on the geocode value of the location.The plurality of POIs may be associated with the related geocode value.

The POI obtaining module 360 may obtain a plurality of sample POIs froma data source (e.g., disk 270, ROM 230, RAM 240, or storage 140). Thesample POIs may be associated with each of locations. The sample POI mayinclude a name of a location (e.g., the sample location, a locationaround the sample location), a coordinate of the location (e.g., alongitude value and/or a latitude value), an address of the location(e.g., the state, province, city, district, road, house number), atelephone number relating to the location, a promotional activity, orother types around the location, such as hospitals, schools, parks,roads, bridges, rivers, lakes, mountains, railway stations, airports,companies, residential communities, hotel scenic, spots, or the like, orany combination thereof. The data source may include a database, anetwork resource, a remote server, or the like, or any combinationthereof.

The classification module 370 may classify a plurality of samplelocations based on the longitude value and latitude value of each of theplurality of sample locations. The sample locations may be geographiclocations stored in a data source. The classification module 370 maystore the plurality of sample locations in different servers, and thesame kind of sample locations may be stored in the same server. Forexample, the classification module 370 may store a plurality of samplelocations in a first administrative region in a first server and store aplurality of sample locations in a second administrative region in asecond server. An administrative region may represent a country, aprovince, a city, a district, a country, a street, etc.

The sorting module 380 may receive the plurality of POIs from the POIdetermination module 350 and sort the plurality of POIs based on a sortrule. For example, the sorting module 380 may sort the plurality of POIsin ascending order based on a distance between the target location and alocation corresponding to each of the plurality of POIs.

FIG. 4 is a flowchart illustrating an exemplary process for determininga point of interest (POI) associated with a target location according tosome embodiments of the present disclosure. In some embodiments, theprocess 400 may be implemented in the on-demand service system 100 asillustrated in FIG. 1. For example, the process 400 may be implementedas one or more sets of instructions and stored in the storage 140 or theprocessor 300, and called and/or executed by the processor 300.

In 410, the processor 300 (e.g., location obtaining module 310) mayobtain a target location associated with a user. In some embodiments,the user may be an individual or entity requesting or ordering aservice. For example, the user may be a passenger, a driver, anoperator, or the like, or any combination thereof. In some embodiments,the target location may include a current location of the user (via,e.g., the user terminal 130 held or operated by the user) determined bya positioning technology (via, e.g., a terminal held or operated by theuser). The positioning technology may include a global positioningsystem (GPS), a global navigation satellite system (GLONASS), a compassnavigation system (COMPASS), a Galileo positioning system, aquasi-zenith satellite system (QZSS), a wireless fidelity (WiFi)positioning technology, or the like, or any combination thereof. In someembodiments, the target location may include a location designated bythe user's input. For example, the user may indicate his or her (currentor anticipated) position by dragging a point-selection icon on a mapinstalled in the user terminal 130 to determine the target location,which may be transmuted by the user terminal 130, via the network 120,to the location obtaining module 310. The target location may be in theform of text, image, audio, video, or the like, or any combinationthereof.

In 420, the processor 300 (e.g., location encoding module 330) maydetermine a geocode value relating to the target location (also referredto herein as a target geocode value) by using an encoding technique. Asused herein, the term “geocode value” generally refers to arepresentation of a geographic location using a code, which may bedetermined by using an encoding technique. In some embodiments, thetarget geocode value may be generated based on a longitude value of thetarget location (also referred to herein as a target longitude value)and a latitude value of the target location (also referred to herein asa target latitude value). The encoding technique to determine a geocodevalue corresponding to a location may include Geohash technique, Mortoncode technique, Hilbert Curve technique, or the like, or a combinationthereof. The Geohash technique is an encoding method that may convert atwo-dimensional location value (e.g., including a longitude value and alatitude value) into a one-dimension value (e.g., a geohash value).Merely by way of example, the target geocode value may be a geohashvalue (also referred to herein as a target geohash value). The targetgeohash value may be generated by interleaving bits of the targetlongitude value and the target latitude value and then converting thebit representation to a base-32 representation.

In 430, the processor 300 (e.g., the look-up module 340) may traverse ageocode structure based on the target geocode value. In someembodiments, the geocode structure may be a structure generatedaccording to process 600 illustrated in FIG. 6. The geocode structuremay store a plurality of geocode values. In some embodiments, thegeocode structure may include a geocode tree structure. In someembodiments, the geocode structure may include a Trie tree structure. Insome embodiments, a technique used for traversing the geocode structuremay include sequential search, binary search, index search, blockingsearch, hash search, or the like, or any combination thereof.

After traversing the geocode structure, in 440, the processor 300 (e.g.,the POI determination module 350) may determine at least one POIassociated with the target location based on the target geocode value ofthe target location. In some embodiments, a geocode value may beassociated with a plurality of POIs. When a geocode value is determined,the plurality of POIs associated with the geocode value may also bedetermined. The processor 300 (e.g., the POI determination module 350)may determine POI(s) around the target location based on the geocodevalue of the target location. The POI relating to the target locationmay include a name of a location (e.g., the target, location, a locationaround the target location), a coordinate of the location (e.g., alongitude value and/or a latitude value), an address of the location(e.g., state, province, city, district, road, house number), a telephonenumber relating to the location, a promotional activity, or other typesaround the location, such as hospitals, schools, parks, roads, bridges,rivers, lakes, mountains, railway stations, airports, companies,residential communities, hotel scenic, spots, or the like, or anycombination thereof.

In some embodiments, the POI determination module 350 may determine aplurality of points of interest (POIs) around the target location. Insome embodiments, the sorting module 380 in the processor 300 may sortthe plurality of POIs based on a sort rule. Merely by way of example,the sorting module 380 may sort the plurality of POIs in ascending orderbased on a distance between the target location and a locationcorresponding to each of the plurality of POIs. The POI determinationmodule 350 may provide only a portion of the plurality of POIs recalled(or determined) by the POI determination module 350 to the user via theuser terminal 130 based on a sort result.

It should be noted that the above description about the process 400 ismerely an example and not intended to be limiting. In some embodiments,the process 400 may include other operations. For example, afterobtaining the target location in 410, the processor 300 (e.g., thelocation analysis module 320) may determine whether the target locationincludes the coordinates of the target location. If the target locationdoes not include any location coordinates (e.g., the target location isthe text description of the location, or a point on a map or a POIentered or selected by the user at the user terminal 130), the locationanalysis module 320 may determine the target longitude value and thetarget latitude value associated with the target location.

FIG. 5 is a flowchart illustrating an exemplary process for determiningPOI according to some embodiments of the present disclosure. In someembodiments, the process 500 may be implemented in the on-demand servicesystem 100 as illustrated in FIG. 1. For example, the process 500 may beimplemented as one or more sets of instructions and stored in thestorage 140 or the processor 300, and called and/or executed by theprocessor 300.

In 510, the processor 300 (e.g., location obtaining module 310) mayobtain a target location associated with a user. The target location maybe in the form of text, image, audio, video, or the like, or anycombination thereof. In some embodiments, the target location mayrepresent location information in two-dimensional location values (e.g.,a longitude and latitude pair).

In some embodiments, the processor 300 (e.g., the location analysismodule 320) may determine whether the target location includes thecoordinates of the target location. If the target location does notinclude any location coordinates (e.g., the target location is the textdescription of the location, or a point on a map or a POI is entered orselected by the user via the user terminal 130), the location analysismodule 320 may determine a longitude value (also referred to herein as atarget longitude value) and a latitude value (also referred to herein asa target latitude value) associated with the target location in 520. Insome embodiments, if the process 300 receives a target location in theform of image, audio, or video, the processor 300 may first convert itinto text description, and the processor 300 may convert the textdescription into the location coordinates. In some embodiments, theprocessor 300 may convert the target location in the form of image,audio, or video into the location coordinates. If the processor 300determines that the target location includes the coordinates of thetarget location, the process 500 may skip 520 and proceed to 530.

In 530, the processor 300 (e.g., the location encoding module 330) maydetermine a target geocode value relating to the target location basedon the target longitude value and the target latitude value by using anencoding technique. In some embodiments, the target geocode value mayrepresent location information in a one-dimension format.

In some embodiments, the location encoding module 330 may determine atarget geocode value by converting each of the target longitude valueand the target latitude value into a binary number, and combine the twobinary numbers. For example, the target location may be represented by alocation coordinate pair as (6, 8). The first term in the locationcoordinate pair represents the target longitude value, and the secondterm in the location coordinate pair represents the target latitudevalue. The processor 300 may convert the target longitude value and thetarget latitude value into binary numbers, octal numbers, or hexadecimalnumbers, or the like. For illustration purposes, binary numbers are usedbelow as an example. The length of the binary number may be determinedbased on the real number of the target longitude value and/or targetlatitude value. In the above example, the binary number of the targetlongitude value is “0110,” and the binary number of the target latitudevalue is “1000.” Then the location encoding module 330 may combine thetwo binary numbers together to generate the target geocode value. Theway of the combination may be arbitrary. In some embodiments, thelocation encoding module 330 may set the binary number of the targetlatitude value behind the binary number of the target longitude value(e.g., in this case, the target geocode value is “01101000”). In someembodiments, the processor 300 may set the binary number of the targetlongitude value behind the binary number of the target latitude value(e.g., the target geocode value is “10000110”).

In some embodiments, the processor 300 may determine the target geocodevalue by using a geohash encoding technique. The target geocode valuemay include a geohash value (also referred to herein as a target geohashvalue). The location encoding module 330 may generate the target geohashvalue by interleaving bits of the target longitude value and the targetlatitude value and convert the bit representation to a base-32representation. For example, the location encoding module 330 may firstconvert the target longitude value and the target latitude value into abinary representation respectively. The location encoding module 330 mayalso interleave the binary representations of the target longitude valueand toe target latitude value. The location encoding module 330 mayfurther convert the result of interleaving into a base-32representation.

In some embodiments, the processor 300 may optionally obtain a searchradius in 540. The processor 300 may determine the search radius basedon default settings or other factors (e.g., the scale of the map or userpreferences). For example, when the processor 300 receives a request forPOI(s) around a location, the processor 300 may determine POI(s) aroundthe location within a predetermined range value automatically. Thepredetermined range value may be a certain value from 0 to 10kilometers, 10.1 kilometers to 20 kilometers, 20.1 kilometers to 30kilometers, 30.1 kilometers to 40 kilometers, 40.1 kilometers to 50kilometers. In some embodiments, the predetermined range value may befrom 1 to 100 meters, 101 meters to 200 meters, 201 meters to 300meters, 301 meters to 400 meters, 401 meters to 500 meters, 501 metersto 600 meters, 601 meters to 700 meters, 701 meters to 800 meters, 801meters to 900 meters, 901 meters to 1000 meters. In some embodiments,the predetermined range value may be from 0 to 10 meters, 11 meters to20 meters, 21 meters to 30 meters, 31 meters to 40 meters, 41 meters to50 meters, 51 to 60 meters, 61 meters to 70 meters, 71 meters to 80meters, 81 meters to 90 meters, 91 meters to 100 meters.

Alternatively or additionally, the search radius may be set by the uservia the user terminal 130. For example, when a user want to get somePOIs around a location designated by him or her via the user terminal130, there may be a selection icon or an input box for a search radiuson a user interface of the user terminal 130, and the user may select asearch radius or input a search radius in the input box. Then theprocessor 300 may receive from the user terminal 130 via, for example,the network 120 the search radius designated by the user and determinePOI(s) with a range of the search radius. In some embodiments, thesearch radius may be a default setting of the on-demand service system100.

Alternatively or additionally, the processor 300 may determine differentvalues of search radius for different locations. For example, theprocessor 300 may associate a relatively smaller value of search radiusrelating to a location in center of a city and associate a relativelylarger value of search radius relating to a location in a suburbandistrict of the city.

The search radius may include a value from 0 to 50 kilometers or largerthan 50 kilometers. In some embodiments, the search radius may be from 0to 10 kilometers, 10.1 kilometers to 20 kilometers, 20.1 kilometers to30 kilometers, 30.1 kilometers to 40 kilometers, 40.1 kilometers to 50kilometers. In some embodiments, the search radius may be from 1 to 100meters, 101 meters to 200 meters, 201 meters to 300 meters, 301 metersto 400 meters, 401 meters to 500 meters, 501 meters to 600 meters, 601meters to 700 meters, 701 meters to 800 meters, 801 meters to 900meters, 901 meters to 1000 meters. In some embodiments, the searchradius may be from 0 to 10 meters, 11 meters to 20 meters, 21 meters to30 meters, 31 meters to 40 meters, 41 meters to 50 meters, 51 to 60meters, 61 meters to 70 meters, 71 meters to 80 meters, 81 meters to 90meters, 91 meters to 100 meters.

On the basis of the search radius, the processor 300 may determine oneor more POIs associated with the target location within the range of thesearch radius.

In some embodiments, the processor 300 may determine a searching codinglength based on the search radius in 550. The searching coding lengthmay reflect the searching range corresponding to the search radius. Theshorter the coding length is, the larger the searching range is. Assumethat the target geocode value is “01101000,” the length of the targetgeocode value is 8, and a first coding length associated with the searchradius is 2 when the search radius is 50 meters, then the processor 300may determine the searching coding length to be 6 (i.e., 8−2=6) based onthe first coding length and the length of the target geocode value.

In 560, the processor 300 (e.g., the look-up module 340) may traverse ageocode structure based on the target geocode value and the searchingcoding length to determine at least one related geocode value. Therelated geocode value may correspond to locations within a range (e.g.,the search radius) of the target location. In some embodiments, thegeocode structure used in 560 may be generated according to process 600illustrated in FIG. 6. The geocode structure may store a plurality ofgeocode values. In some embodiments, the geocode structure may include ageocode tree structure. In some embodiments, the geocode structure mayinclude a Trie tree structure. The related geocode value may have acommon prefix with respect to the target geocode value. The commonprefix may include one or more characters shared by two or more geocodevalues. For example, at least a first character of a first geocode valueand a first character of a second geocode value may be substantiallyidentical. In some embodiments, a prefix of a geocode value may be a setof consecutive characters of the geocode value including at least thefirst character of the geocode value. A suffix of the geocode value isthe remaining set of consecutive characters that have not been chosen asthe prefix (e.g., the characters after the prefix). The length of acommon prefix may be determined based, at least in part, on the searchradius. For example, if the target geocode value is “01101000,” thesearch radius is 50 meters, a first coding length associated with thesearch radius is 2, so the length of the common prefix may be determinedas six (i.e., 8−2=6) and the common prefix may be “011010.” The relatedgeocode value may include at least one geocode value having a prefix“011010.”

In some embodiments, a construction module (not shown in FIG. 3) of theprocessor 300 may determine a hash index for each node in the geocodetree structure. The look-up module 340 may determine a node based on thehash index. The hash index generally refers to a map relationshipbetween a key associated with the node and the position of the node. Forexample, if the target geocode value is “01101000,” the searching codinglength is 6, the look-up module 340 may determine a position of a nodeassociated with a string (e.g., “011010”) based on the hash index. Alldescendants (also referred to herein as leaf nodes or child nodes) ofthe node have a common prefix (e.g., “011010”) of a string associatedwith the node. Then the at least one related geocode value may be astring associated with a descendant of the node.

In 570, the processor 300 (e.g., the POI determination module 350) maydetermine at least one POI associated with the at least one relatedgeocode value. The processor 300 may determine the at least one POI asthe POI associated with the target location. The POI may include a nameof the specific location, a coordinate of the specific location (e.g., alongitude value and/or a latitude value), an address of the specificlocation (e.g., state, province, city, district, road, house number), atelephone number relating to the specific location, a promotionalactivity, or the like, or any combination thereof.

It should be noted that the above description about the process 500 ismerely an example and not intended to be limiting. In some embodiments,the process 500 may include other operations. For example, afterdetermining a target geocode value relating to the target location, theprocessor 300 (e.g., the location encoding module 330) may, in 530,obtain a neighboring location geocode value corresponding to the targetlocation. The neighboring location geocode value may relate to ageographic location around the target location. The neighboring locationgeocode value may be associated with one or more POIs. After obtainingthe neighboring location geocode code, the look-up module 340 maydetermine the at least one POI based on the neighboring location geocodevalue, the target geocode value, and the searching coding length. Insome embodiments, after determining a plurality of POIs around thetarget location and the neighboring location, the sorting module 300 ofthe processor 300 may sort the plurality of POIs based on a sort rule.Merely by way of example, the sorting module 380 may sort the pluralityof POIs in ascending order based on a distance between the targetlocation and a location corresponding to each of the plurality of POIs.Alternatively or additionally, the POI determination module 350 maytransmitted the plurality of POIs to the user terminal 130, which may bedisplayed at a user interface of the user terminal 130 (e.g., displayedas the pointers shown in FIG. 7).

FIG. 6 is a flowchart illustrating an exemplary process for generating ageocode structure according to some embodiments of the presentdisclosure. The geocode structure generated according to the process 600may be used in step 430 of the process 400 and step 560 of the process500 for determining a POI as described elsewhere in this disclosure.

In some embodiments, the process 600 may be implemented in the on-demandservice system 100 as illustrated in FIG. 1. The process 600 may beimplemented in the server 110, the user terminal 130, or the storage140. For example, the process 600 may be implemented as one or more setsof instructions and stored in the storage 140 or the processor 300, andcalled and/or executed by the processor 300. In some embodiments, all ofthe process 600, the process 400, and/or the process 500 may be calledanchor executed by the processor 300 in the server 110. In someembodiments, the process 600 may be implemented in the server 110 or thestorage 140, the process 400 and/or the process 500 may be called and/orexecuted by the processor 300 in the user terminal 130.

In 610, the processor 300 (e.g., the location obtaining module 310) or adifferent processor may obtain a plurality of locations (also referredto herein as sample locations). In some embodiments, the samplelocations may be geographic locations stored in a data source. The datasource may include a database, a network resource, a remote server, orthe like, or any combination thereof. The sample locations may be in theform of text, image, audio, video, or the like, or any combinationthereof.

In some embodiments, before obtaining a plurality of sample locations,the classification module 370 may classify a plurality of samplelocations based on the longitude value and latitude value of each of theplurality of sample locations. Then classification module 370 may storethe plurality of sample locations in different servers, and the samekind of sample locations may be stored in the same server. In someembodiments, sample locations in a same geographic region may beregarded as being the same kind. For example, the classification module370 may store a plurality of sample locations in a first administrativeregion in a first server and store a plurality of sample locations in asecond administrative region in a second server. An administrativeregion may represent a country, a province, a city, a district, acountry, a street, etc.

In some embodiments, the sample locations obtained in 610 may include alocation coordinate value. In some embodiments, the sample locationsobtained in 610 may not include a location coordinate value, and theprocessor 300 may convert the sample locations into a locationcoordinate value.

In 620, the processor 300 (e.g., the location analysis module 320) or adifferent processor may determine a longitude value (also referred toherein as a sample longitude value) relating to each of the plurality ofsample locations and a latitude value (also referred to herein as asample latitude value) relating to each of the plurality of samplelocations.

In 630, the processor 300 (e.g., the location encoding module 330) or adifferent processor may determine a sample geocode value for each of theplurality of sample locations based on the sample longitude value andthe sample latitude value. The process of determining the sample geocodevalue for each of the plurality of sample locations may be similar tothe process of determining the target geocode value relating to thetarget location, for example, by rising Geohash technique (e.g., aspreviously described in connection with step 530 of the process 500).

In 640, the processor 300 (e.g., the construction module) or a differentprocessor may determine a plurality of nodes of a geocode structurebased on the sample geocode values. In some embodiments, the geocodestructure may include a geocode tree structure. In some embodiments, thegeocode structure may include a Trie tree structure. The geocodestructure may include a plurality of nodes that may store the pluralityof sample geocode values. In some embodiments, a node of the geocodetree structure may be associated with a plurality of sample geocodevalues. In some embodiments, a node of the geocode tree structure may beassociated with one sample geocode value.

In 650, the processor 300 (e.g., the construction module) or a differentprocessor may associate one or more sample POIs to each of the samplegeocode values. The POI obtaining module 360 may obtain a plurality ofsample POIs from a data source. The POIs may be associated with each ofthe sample locations. The sample POI may include a name of a location(e.g., the sample location, a location around the sample location), acoordinate of the location (e.g., a longitude value and/or a latitudevalue), an address of the location (e.g., state, province, city,district, road, house number), a telephone number relating to thelocation, a promotional activity, or other types around the location,such as hospitals, schools, parks, roads, bridges, rivers, lakes,mountains, railway stations, airports, companies, residentialcommunities, hotel scenic, spots, or the like, or any combinationthereof. In some embodiments, a sample geocode value may be associatedwith one or more sample POIs. If a geocode value is determined, the oneor more POIs associated with the geocode value may also be determined.

In some embodiments, the process 600 may further include determining aHash index for each node of the geocode structure. In 660, the processor300 (e.g., the construction module) or a different processor maydetermine a Hash index for each node. The hash index may be a maprelationship between a key associated with a node and the position ofthe node. In some embodiments, the processor 300 may generate the hashIndex by computing a hash value for each of the node in the geocode treestructure. A hash value of a node may represent a path from the rootnode to the node. The hash value of each node may quickly locate theposition of the nods in the geocode tree structure with a given searchkey (e.g., the target geocode value).

Having thus described the basic concepts, it may be rather apparent tothose skilled in the art after reading this detailed disclosure that theforegoing detailed disclosure is intended to be presented by way ofexample only and is not limiting. Various alterations, improvements, andmodifications may occur and are intended to those skilled in the art,though not expressly stated herein. These alterations, improvements, andmodifications are intended to be suggested by this disclosure, and arewithin the spirit and scope of the exemplary embodiments of thisdisclosure.

Moreover, certain terminology has been used to describe embodiments ofthe present disclosure. For example, the terms “one embodiment,” “anembodiment,” and “some embodiments” mean that a particular feature,structure or characteristic described in connection with the embodimentis included in at least one embodiment of the present disclosure.Therefore, it is emphasized and should be appreciated that two or morereferences to “an embodiment” or “one embodiment” or “an alternativeembodiment” in various portions of this specification are notnecessarily all referring to the same embodiment. Furthermore, theparticular features, structures or characteristics may be combined assuitable in one or more embodiments of the present disclosure.

Further, it will be appreciated by one skilled in the art, aspects ofthe present disclosure may be illustrated and described herein in any ofa number of patentable classes or context including any new and usefulprocess, machine, manufacture, or composition of matter, or any new anduseful improvement thereof. Accordingly, aspects of the presentdisclosure may be implemented entirely hardware, entirely software(including firmware, resident software, micro-code, etc.) or combiningsoftware and hardware implementation that may all generally be referredto herein as a “module,” “unit,” “component,” “device,” or “system.”Furthermore, aspects of the present disclosure may take the form of acomputer program product embodied in one or more computer readable mediahaving computer readable program code embodied thereon.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including electro-magnetic, optical, or thelike, or any suitable combination thereof. A computer readable signalmedium may be any computer readable medium that is not a computerreadable storage medium and that may communicate, propagate, ortransport a program for use by or in connection with an instructionexecution system, apparatus, or device. Program code embodied on acomputer readable signal medium may be transmitted using any appropriatemedium, including wireless, wireline, optical fiber cable, RF, or thelike, or any suitable combination of the foregoing.

Computer program code for carrying out operations for aspects of thepresent disclosure may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, C #, VB,NET, Python or the like, conventional procedural programming languages,such as the “C” programming language, Visual Basic, Fortran 2003, Perl,COBOL 2002, PHP, ABAP, dynamic programming languages such as Python,Ruby and Groovy, or other programming languages. The program code mayexecute entirely on the users computer, partly on the user's computer,as a stand-alone software package, partly on the users computer andpartly on a remote computer or entirely on the remote computer orserver. In the latter scenario, the remote computer may connect to theuser's computer through any type of network, including a local areanetwork (LAN) or a wide area network (WAN), or the connection may bemade to an external computer (for example, through the Internet using anInternet Service Provider) or in a cloud computing environment oroffered as a service such as a Software as a Service (SaaS).

Furthermore, the recited order of processing elements or sequences, orthe use of numbers, letters, or other designations therefore, is notintended to limit the claimed processes and methods to any order exceptas may be specified in the claims. Although the above disclosurediscusses through various examples what is currently considered to be avariety of useful embodiments of the disclosure, it is to be understoodthat such detail is solely for that purpose, and that the appendedclaims are not limited to the disclosed embodiments, but, on thecontrary, are intended to cover modifications and equivalentarrangements that are within the spirit and scope of the disclosedembodiments. For example, although the implementation of variouscomponents described above may be embodied in a hardware device, it mayalso be implemented as a software only solution, e.g., an installationon an existing server or mobile device.

Similarly, it should be appreciated that in the foregoing description ofembodiments of the present disclosure, various features are sometimesgrouped together in a single embodiment, figure, or description thereoffor the purpose of streamlining the disclosure aiding in theunderstanding of one or more of the various embodiments. This method ofdisclosure, however, is not to be interpreted as reflecting an intentionthat the claimed subject matter requires more features than areexpressly recited in each claim. Rather, claim subject matter lie inless than all features of a single foregoing disclosed embodiment.

I claim:
 1. A system configured to operating an online on-demand serviceplatform, comprising: a bus; a storage medium electronically connectedto the bus, including a set of instructions for determining a point ofinterest (POI); and logic circuits in communication with the storagemedium via the bus, wherein when executing the set of instructions, thelogic circuits are configured to cause the system to: receive, from aterminal, electronic signals including information relating to a targetlocation associated with a user; determine a target geocode valuerelating to the target location; obtain a geocode structure fordetermining POIs; and determine at least one POI relating to the targetlocation based on the geocode structure and the target geocode value,wherein the geocode structure is generated by a process for generating ageocode structure, the process comprising: obtaining a plurality ofsample locations from a storage device; determining a sample longitudevalue and a sample latitude value for each of the plurality of samplelocations; determining a sample geocode value for the each of theplurality of sample locations based on the sample longitude value of theeach of the plurality of sample locations and the sample latitude valueof the each of the plurality of sample locations; generating a pluralityof nodes of the geocode structure based on the sample geocode values;and saving the geocode structure into the storage device.
 2. The systemof claim 1, wherein to determine the target geocode value relating tothe target location, the logic circuits are further configured to causethe system to: determine a target longitude value of the target locationand a target latitude value of the target location based on theinformation relating to the target location associated with the user;and determine the target geocode value relating to the target locationbased on the target longitude value of the target location and thetarget latitude value of the target location by using an encodingtechnique.
 3. The system of claim 2, wherein the encoding techniqueincludes a Geohash technique.
 4. The system of claim 1, wherein thegeocode structure includes a geocode tree structure, and to determinethe at least one POI relating to the target location based on thegeocode structure and the target geocode value, the logic circuits arefurther configured to cause the system to: obtain a search radius;determine a searching coding length based on the search radius;determine at least one related geocode value in the geocode treestructure based on the target geocode value and the searching codinglength by using a search technique; and determine the at least one POIbased, at least in part, on the at least one related geocode value. 5.The system of claim 4, wherein the search technique includes a Hashsearch.
 6. The system of claim 1, wherein the process for generating ageocode structure further comprises associating one or more sample POIsto each of the sample geocode values in the geocode structure.
 7. Thesystem of claim 1, wherein the process for generating a geocodestructure further comprises determining a Hash index for the pluralityof nodes of the geocode structure.
 8. The system of claim 1, wherein thegeocode structure includes a Trie tree structure.
 9. The system of claim1, wherein the logic circuits are further configured to cause the systemto: determine a neighboring location geocode value corresponding to thetarget location; and determine the at least one POI relating to thetarget location based, at least in part, on the neighboring locationgeocode value.
 10. A method implemented in a computing device fordetermining a POI, comprising: receiving, by first logic circuits from aterminal, electronic signals including information relating to a targetlocation associated with a user; determining, by the first logiccircuits, a target geocode value relating to the target location;obtaining, by the first logic circuits, a geocode structure fordetermining POIs; and determining, by the first logic circuits, at leastone POI relating to the target location based on the geocode structureand the target geocode value, wherein the geocode structure is generatedby a process for generating a geocode structure, the process comprising:obtaining, by second logic circuits, a plurality of sample locationsfrom a storage device; determining, by the second logic circuits, asample longitude value and a sample latitude value for each of theplurality of sample locations; determining, by the second logiccircuits, a sample geocode value for the each of the plurality of samplelocations based on the sample longitude value of the each of theplurality of sample locations and the sample latitude value of the eachof the plurality of sample locations; generating, by the second logiccircuits, a plurality of nodes of the geocode structure based on thesample geocode values; and saving, by the second logic circuits, thegeocode structure into the storage device.
 11. The method of claim 10,wherein determining, by the first logic circuits, the target geocodevalue relating to the target location comprises: determining a targetlongitude value of the target location and a target latitude value ofthe target location based on the information relating to the targetlocation associated with the user; and determining the target geocodevalue relating to the target location based on the target longitudevalue of the target location and the target latitude value of the targetlocation by using an encoding technique.
 12. The method of claim 11,wherein the encoding technique includes a Geohash technique.
 13. Themethod of claim 10, wherein the geocode structure includes a geocodetree structure, and determining, by the first logic circuits, the atleast one POI relating to the target location based on the geocode treestructure and the target geocode value includes: obtaining a searchradius; determining a searching coding length based on the searchradius; determining at least one related geocode value in the geocodetree structure based on the target geocode value and the searchingcoding length; and determining the at least one POI based, at least inpart, on the at least one related geocode value.
 14. The method of claim10, wherein the first logic circuits and the second logic circuits aredifferent.
 15. The method of claim 10, wherein the process forgenerating a geocode structure further comprises associating, by thesecond logic circuits, one or more sample POIs to each of the samplegeocode values in the geocode structure.
 16. The method of claim 10,wherein the process for generating a geocode structure furthercomprises: determining, by the second logic circuits, a Hash index forthe plurality of nodes of the geocode structure.
 17. The method of claim10, further comprising: determining, by the first logic circuits, aneighboring location geocode value corresponding to the target location;and determining, by the first logic circuits, the at least one POIrelating to the target location based, at least in part, on theneighboring location geocode value.
 18. A non-transitory computerreadable medium embodying a computer program product, the computerprogram product comprising instructions configured to cause a computingdevice to: receive, from a terminal, electronic signals includinginformation relating to a target location associated with a user;determine a target geocode value relating to the target location; obtaina geocode structure for determining POIs; and determine at least one POIrelating to the target location based on the geocode structure and thetarget geocode value, wherein the geocode structure is generated by aprocess for generating a geocode structure, the process comprising:obtaining a plurality of sample locations from a storage device;determining a sample longitude value and a sample latitude value foreach of the plurality of sample locations; determining a sample geocodevalue for the each of the plurality of sample locations based on thesample longitude value of the each of the plurality of sample locationsand the sample latitude value of the each of the plurality of samplelocations; generating a plurality of nodes of the geocode structurebased on the sample geocode values; and saving the geocode structureinto the storage device.